package mysql8学习.高级.第03章_用户与权限管理;

/**
 * 正常情况下，并不希望每个用户都可以执行所有的数据库操作。
 * 当MySQL允许一个用户执行各种操作时，
 * 它将首先核实该用户向MySQL服务器发送的连接请求，然后确认用户的操作请求是否被允许。
 * 这个过程称为MySQL中的访问控制过程。
 * MySQL的访问控制分为两个阶段:
 * 连按核实阶段  和   请求核实阶段。
 *
 * 连接核实阶段
 * 当用户试图连接MySQL服务器时，
 * 服务器基于用户的身份以及用户是否能提供正确的密码验证身份来确定接受或者拒绝连接。
 * 即客户端用户会在连接请求中提供用户名、主机地址、用户密码，MySQL服务器接收到用户请求后，
 * 会使用user表中的host、user和 authentication_string这3个字段匹配客户端提供信息。
 * 服务器只有在 user 表记录的Host和User字段匹配客户端主机名和用户名，并且提供正确的密码时才接受连接。
 * 如果连接核实没有通过，服务器就完全拒绝问;否则，服务器接受连接,然后进入阶段2等待用户请求。
 * 4.2请求核实阶段
 * 一旦建立了连接，服务器就进入了访问控制的阶段2,也就是请求核实阶段。
 * 对此连接上进来的每个请求,服务器检查该请求要执行什么操作、否有足够的权限来执行它，
 * 这正是需要授权表中的权限列发挥作用的地方。
 * 这些权限可以来自  user、db、table_priv 和 column_priv表。
 * 确认权限时，MySQL首先检查user表，如果指定的权限没有在user表中被授予,那么MySQL就会继续检查db表,
 * db表是下一安全层级,其中的权限限定于数据库层级，在该层级的SELECT权限允许用户查看指定数据库的所有表中的数据;
 * 如果在该层级没有找到限定的权限，则 MySQL 继续检查 tables_priv 表 以及columns_priv表，如果
 * 所有权限表都检查完毕，但还是没有找到允许的权限操作, MySQL将 返回错误信息。
 * 用户请求的操作不能执行，操作失败。
 *
 */
public class D2_权限表的访问流程 {
}
